Access, SQL Server, Oracle, MySQL的区别与相似

您所在的位置:网站首页 sql server跟oracle的区别 Access, SQL Server, Oracle, MySQL的区别与相似

Access, SQL Server, Oracle, MySQL的区别与相似

2023-08-23 03:28| 来源: 网络整理| 查看: 265

由于在自己的工作中不断会遇到各个数据库之间的兼容问题,而各个数据库之间虽说大部分SQL语句是可以通用的,但是每个数据库的数据类型还是有一些区别,而且也有自己特有的语法或者函数,这里根据自己曾碰到的各类区别总结一下。

数据类型 数据类型AccessSQL ServerOracleMySQL文本varcharchar,nchar, varchar,nvarchar,textchar,nchar, varchar2,nvarchar2CHAR,VARCHAR, TEXT[more]长整型integerintNUMBER(p[,s])INT,INTEGER整型shortsmallint,tinyintNUMBER(p[,s])TINYINT,SMALLINT, MEDIUMINT双精度型double,floatdecimal,numericBINARY_DOUBLE单精度型single,realfloat,realBINARY_FLOATFLOAT字节型byte小数NUMERIC(6,2)DECIMAL(M,D)货币currency,moneymoney,smallmoney日期/时间date,time,datetimedatatimeDATEDATE,TIME, DATETIME时间戳TIMESTAMPTIMESTAMPTIMESTAMP布尔Boolean,Bitbit二进制Binarybinaryvarbinary,imageBLOB,CLOB,NCLOB, BFILE,RAW(n)TINYBLOB,BLOBOLE 对象OLEObject备注text 详细参考网址Accesshttp://www.cnblogs.com/Ryan_j/archive/2010/10/14/1851765.htmlSQL Serverhttp://www.cnblogs.com/andy_tigger/archive/2011/08/21/2147745.htmlOraclehttp://www.cnblogs.com/yshb/archive/2012/06/19/2554279.htmlMySQLhttp://www.cnblogs.com/bukudekong/archive/2011/06/27/2091590.html

2应用场景 2.1 Access Access适合入门级应用,最大能存2G数据,实在不值一提,但由于我的客户太low总把access当excel用,稀里糊涂的往里录入一些零散的数据,然后让我把它导入到其他数据库。 2.2 SQL Server MS SQL Server主要面向中小企业。其最大的优势就是在于集成了MS公司的各类产品及资源,提供了强大的可视化界面、高度集成的管理开发工具,在快速构建商业智能(BI)方面颇有建树。 MS SQL Server是MS公司在软件集成方案中的重要一环,也为WIN系统在企业级应用中的普及做出了很大贡献。 主要应用在windows生态系统的产品,好处坏处都很分明。好处就是,高度集成化,微软也提供了整套的软件方案,基本上一套win系统装下来就齐活了。因此,不那么缺钱,但很缺IT人才的中小企业,会偏爱 MS SQL Server 。例如,自建ERP系统、商业智能、垂直领域零售商、餐饮、事业单位等等。 2.3 Oracle Oracle是一个非常典型的关系数据库。因此也变的严谨、安全、高速、稳定,并且变的越来越庞大。 由于其诞生早、结构严谨、高可用、高性能等特点,使其在传统数据库应用中大杀四方,金融、通信、能源、运输、零售、制造等各个行业的大型公司基本都是用了Oracle,早些年的时候,世界500强几乎100%都是Oracle的用户。 主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。而且由于Oracle对复杂计算、统计分析的强大支持,在互联网数据分析、数据挖掘方面的应用也越来越多 2.4 MySQL MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向,MySQL的高并发存取能力并不比大型数据库差,同时价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。并且由于MySQL的开源特性,针对一些对数据库有特别要求的应用,可以通过修改代码来实现定向优化,例如SNS、LBS等互联网业务

3架构 3.1 SQL Server 数据架构基本是纵向划分,分为:Protocol Layer(协议层), Relational Engine(关系引擎), Storage Engine(存储引擎), SQLOS。SQL执行过程就是逐层解析的过程,其中Relational Engine中的优化器,是基于成本的(CBO),其工作过程跟Oracle是非常相似的。在成本之上也是支持很丰富的HINT,包括:连接提示、查询提示、表提示。 3.2 Oracle 数据文件包括:控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件。这是根据文件功能行进行划分,并且所有文件都是二进制编码后的文件,对数据库算法效率有极大的提高。由于Oracle文件管理的统一性,就可以对SQL执行过程中的解析和优化,指定统一的标准: RBO(基于规则的优化器)、CBO(基于成本的优化器) 通过优化器的选择,以及无敌的HINT规则,给与了SQL优化极大的自由,对CPU、内存、IO资源进行方方面面的优化。 3.3 MySQL 最大的一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性大大降低。在SQL执行优化方面,也就有着一些不可避免的瓶颈。在多表关联、子查询优化、统计函数等方面是软肋,而且只支持极简单的HINT。

4基本SQL语句 1、创建数据库 CREATE DATABASE database-name 2、删除数据库 drop database dbname 3、创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 4、 删除新表 drop table tabname 5、 增加一列 Alter table tabname add column col type 6、删除一列 alter table table_name drop字段名; 7、添加主键 Alter table tabname add primary key(col) 8、创建索引 create [unique] index idxname on tabname(col….) 9、 删除索引 drop index idxname 10、创建视图 create view viewname as select statement 11、 删除视图 drop view viewname 12、几个简单的基本的sql语句 查询:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2)   删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ‘%value1%’ 排序:select * from table1 order by field1,field2 [desc] 总数:select count(field1) as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalu minvalu from table1 13、使用外连接 A、left outer join: 左外连接(左连接):结果集包括连接表的匹配行,也包括左连接表的所有行。 select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full outer join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连中有记录 几个高级的语句 14、复制表(只复制结构,源表名:a 新表名:b) Access: 法一:select * into b from a where 法二:select top 0 * into b from a Sql Server:      SELECT Id,FirstName,LastName,Weight,Height INTO People FROM Person(NOLOCK) WHERE 1=0 Oracle、MySql:       CREATE TABLE People AS SELECT Id,FirstName,LastName,Weight,Height FROM Person WHERE 1=0 15、拷贝表(拷贝数据,源表名:a 目标表名:b) insert into b(a, b, c) select d,e,f from b; 16、跨数据库之间表的拷贝(具体数据使用绝对路径) Access:      insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件          例子:..from b in ’ “&Server.MapPath(“.”)&”\data.mdb” &”’ where.. SQL Server:   当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表

当目标表不存在时: select * into 目的数据库..表 from 源数据库..表

如果在不同的SQL之间: insert into openrowset(‘sqloledb’,’目的服务器名’;’sa’;”,目的数据库.dbo.表) select *from 源数据库..表



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3